<!--
    页面上所有显示的内容都是通过  输出流的方式输出到页面上的
    jsp的三种语法
    jsp头部的page指令
    jsp的page指令可以修改jsp页面的一些重要的属性,或者行为
    1 - language属性  表示jsp翻译后是什么语言文件,暂时只支持java
    2 - contentType属性   表示jsp返回的数据类型是什么,也是源码中response.setContentType()参数值
    3 - pageEncoding属性  表示当前页面文件本身的字符集
    4 - import属性    跟java源代码中一样,用于导包,导类
    =============下面的两个属性是给out输出流使用=================
    5 - autoFlush属性     设置out输出流缓冲区满了之后,是否自动刷新缓冲级区,默认是true
    6 - buffer属性    设置缓冲区的大小,默认是8kb
    7 - errorPage属性     设置当jsp页面运行出错的时候,自动跳转到错误的页面路径
    8 - isErrorPage属性   设置当前jsp页面是否是错误页面信息,默认是false，如果是true可以获取到异常信息
    9 - session属性   设置访问当前jsp页面,是否会创建HttpSession对象,默认是true
    10 - extends属性  设置jsp翻译出来的java类默认继承谁

    表达式中的常用脚本(常用)
-->
<%--
    表达式脚本的格式是:<%=表达式%>
    表达式脚本的作用是：在jsp页面上输出数据

    表达式脚本的特点
        1.所有的表达式脚本都会被翻译到_jspService()方法中
        2.表达式脚本都会被翻译成out.print()输出到页面上
        3.由于表达式脚本翻译的内容都在_jspService()方法中,所以_jspService()方法中的对象都是可以直接使用的
        4.表达式脚本中的表达式不能以分号结束

    练习：
        1.输出整形
        2.输出浮点型
        3.输出字符串
        4.输出对象
--%>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8"
         pageEncoding="utf-8"
         autoFlush="true"
         buffer="8kb"
         errorPage="/error.jsp"
         isErrorPage="true"
         session="true"
         language="java" %>
<html>
<head>
    <title>jsp页面</title>
</head>
<body>
    <h1>这是HTML页面的数据</h1>
    <h1>十年磨一剑122222222222222222222222222222222222</h1>

    <%-- 练习 --%>
<%-- 1.声明类属性--%>
<%!
    private Integer id;
    private String name;
    private static Map<String , Object> map;
%>

<%--2.声明static静态代码块--%>
<%!
    static {
        map = new HashMap<String , Object>();
        map.put("key1" , "value1");
        map.put("key2" , "value2");
        map.put("key3" , "value3");
    }
%>

    <%--3.声明类方法--%>
<%!
    public int abc(){
        return 21212;
    }
%>

<%--声明内部类--%>
<%!
    public static class A{
        private Integer id = 12;
        private String abc = "abc";
    }
%>

<%=12%><br/>
<%=12.12%><br/>
<%="输出字符串"%>
<%=request.getParameter("username")%>
<%=map%>

<%--代码脚本--%>
<%--代码脚本的语句格式是--%>
<%--<%--%>
<%--    java语句--%>
<%--%>--%>

<%--
代码脚本的作用是：可以在jsp页面中,编写我们自己需要的功能(写的是java语句)
代码脚本的特点是：
    1.代码脚本翻译之后都在_jspService方法中
    2.代码脚本由于翻译到_jspService()方法中,所以在_jspService()方法中的现有对象都是可以直接使用的
    3.还可以由多个代码脚本块组合完成一个完整的java语句
    4.代码脚本还可以和表达式一起组合使用,在jsp页面上输出数据
练习：
    1.代码脚本 -- if 语句
    2.代码脚本 -- for 循环语句
    3.翻译后java文件中_jspService方法内的代码都可以写
--%>

<%--练习--%>
<%--代码脚本 if语句--%>
<%
    int i = 12;
    if(i == 13){
        System.out.println("闪耀了...");
    }else{
        System.out.println("暗淡了");
    }
%>

    <hr>

<%--练习 多个脚本完成一个功能--%>
<%
    int m = 13;
    if(m == 13){
%>
    <h1>闪耀了</h1>
<%
    }else{
%>
    <h1>黯淡了</h1>
<%
    }
%>

<%--2.代码脚本 -- for循环语句--%>
    <table border="1" cellpadding="0" width="500">
        <%
            for(int a = 0 ; a < 10 ; a++){
        %>
        <%--这边也是可以直接访问java代码里面的变量的--%>
            <tr>
                <td>第<%=a + 1%>行</td>
            </tr>
        <%
            }
        %>
    </table>
<%
    String username = request.getParameter("username");
%>
用户名是:<%=username%>


<%--jsp中的三种注释--%>
<%--html注释--%>
<!--这是Html注释-->
html注释会被翻译到java源代码当中,在_jspService方法里面,以out.writer输出到客户端

<%
//单行注释
    /*多行注释*/
%>

<%-- jsp注释    --%>
jsp注释可以注释掉所有的jsp页面中的代码


</body>
</html>
